package util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Klasse, die zur 256bit-Verschluesselung von Klartextpasswoertern Mithilfe 
 * des SHA-Algorithmus dient
 */
public class PasswortSHA {

	/**
	 * Die Methode verschluesselt ein Passwort, welches als String uebergeben
	 * wird
	 * 
	 * @param passwort das zu verschluesselnde Klartextpasswort
	 * @return das verschluesselte Passwort
	 */
	public static String passwortVerschluesseln(String passwort) {
		StringBuffer hexString = new StringBuffer();

		try {
			MessageDigest shaAlgo = MessageDigest.getInstance("SHA-512");
			shaAlgo.update(passwort.getBytes());
			byte[] digest = shaAlgo.digest();

			for (int i = 0; i < digest.length; i++) {
				passwort = Integer.toHexString(0xFF & digest[i]);
				hexString.append(passwort);
			}
		} catch (NoSuchAlgorithmException ex) {
			// wird nie erreicht
			return null;
		}

		return hexString.toString();
	}

	/**
	 * Methode zum Testen, ob das vom Benutzer eingegebe Passwort mit dem
	 * Passwort aus der Konfig uebereinstimmt
	 * 
	 * @param passwort vom Benutzer eingegebenes Passwort
	 * @param shapasswort in der Konfig stehender SHA-Hashcode
	 * @return wahr oder falsch
	 */
	public static boolean ueberPruefePasswort(String passwort,
			String shapasswort) {
		String test = PasswortSHA.passwortVerschluesseln(passwort);

		return (test.equals(shapasswort));
	}

}